import axios from 'axios'
import { ElMessage } from 'element-plus'
import $tool from '@/utils/tool'
import $storage from '@/utils/storage'

const service = axios.create({
  baseURL: import.meta.env.VITE_API_URL as any,
  timeout: 50000,
  headers: { 'Content-Type': 'application/x-www-form-urlencoded	' }
})

service.interceptors.request.use(
  (config: any) => {
    if (config.appendKey as any) {
      if (!config.data) {
        config.data = {}
      }
      config.data = $tool.appendKey(config.data)
    }

    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

service.interceptors.response.use(
  (response) => {
    const res = response.data

    if (res.code === 200) {
      if (!res.datas.error) {
        return res
      } else if (res.datas.error && res.datas.error === '请登录') {
        $storage.clearSession()
        window.location.reload()
        ElMessage.error(res.datas.error)
        return false
      } else {
        ElMessage.error(res.datas.error)
        return false
      }
    } else {
      ElMessage.error('后端接口错误，请联系后端')
      return false
    }
  },
  (error) => {
    // const res = error.response.data
    console.log(error)
    if (error.code === 'ERR_BAD_RESPONSE') {
      const res = error.response.data
      switch (res.code) {
        case 10500:
          ElMessage.error(res.message)
          break
        case 2:
          ElMessage.error(res.message)
          break
      }
    }

    // if (res.code === 2) {
    //   ElMessage.error(res.message)
    // }

    // if (error.message.indexOf('timeout') !== -1) {
    //   ElMessage.error('网络超时')
    // } else if (error.message === 'Network Error') {
    //   ElMessage.error('网络连接错误')
    // } else if (error.message.indexOf('400') !== -1) {
    //   ElMessage.error('参数错误')
    // } else {
    //   if (error.response.data) ElMessage.error(error.response.statusText)
    //   else ElMessage.error('接口路径找不到')
    // }
    return false
  }
)

export default service
